home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / scheme / scm / xscm.lha / xscm / xgen.scm < prev    next >
Encoding:
Text File  |  1992-08-29  |  6.5 KB  |  131 lines

  1. ; $Header: /home/campbell/Languages/Scheme/scm/x-scm/RCS/xgen.scm,v 1.1 1992/07/03 03:06:52 campbell Beta $
  2. ;
  3. ; This module generates two files, xevent.scm and xevent.h, that
  4. ; define the correspondence between Scheme identifiers for X structure
  5. ; fields and the C code required to fetch them and turn them into Scheme
  6. ; values.
  7. ;
  8. ;  Author: Larry Campbell (campbell@redsox.bsw.com)
  9. ;  Copyright 1992 by The Boston Software Works, Inc.
  10. ;  Permission to use for any purpose whatsoever granted, as long
  11. ;  as this copyright notice remains intact.  Please send bug fixes
  12. ;  or enhancements to the above email address.
  13.  
  14. (require 'stdio)
  15.  
  16. (define x::event-map-table
  17.   '(
  18.     (x:any-event:type        "MAKINUM(((XAnyEvent *) x)->type)")
  19.     (x:any-event:serial        "MAKINUM(((XAnyEvent *) x)->serial)")
  20.     (x:any-event:send-event    "x_make_bool(((XAnyEvent *) x)->send_event)")
  21.  
  22.     (x:key-event:type        "MAKINUM(((XKeyEvent *) x)->type)")
  23.     (x:key-event:serial        "MAKINUM(((XKeyEvent *) x)->serial)")
  24.     (x:key-event:send-event    "x_make_bool(((XKeyEvent *) x)->send_event)")
  25.     (x:key-event:time        "MAKINUM(((XKeyEvent *) x)->time)")
  26.     (x:key-event:x        "MAKINUM(((XKeyEvent *) x)->x)")
  27.     (x:key-event:y        "MAKINUM(((XKeyEvent *) x)->y)")
  28.     (x:key-event:x-root        "MAKINUM(((XKeyEvent *) x)->x_root)")
  29.     (x:key-event:y-root        "MAKINUM(((XKeyEvent *) x)->y_root)")
  30.     (x:key-event:state        "MAKINUM(((XKeyEvent *) x)->state)")
  31.     (x:key-event:keycode    "MAKINUM(((XKeyEvent *) x)->keycode)")
  32.     (x:key-event:same-screen    "x_make_bool(((XKeyEvent *) x)->same_screen)")
  33.  
  34.     (x:button-event:type    "MAKINUM(((XButtonEvent *) x)->type)")
  35.     (x:button-event:serial    "MAKINUM(((XButtonEvent *) x)->serial)")
  36.     (x:button-event:send-event    "x_make_bool(((XButtonEvent *) x)->send_event)")
  37.     (x:button-event:time    "MAKINUM(((XButtonEvent *) x)->time)")
  38.     (x:button-event:x        "MAKINUM(((XButtonEvent *) x)->x)")
  39.     (x:button-event:y        "MAKINUM(((XButtonEvent *) x)->y)")
  40.     (x:button-event:x-root    "MAKINUM(((XButtonEvent *) x)->x_root)")
  41.     (x:button-event:y-root    "MAKINUM(((XButtonEvent *) x)->y_root)")
  42.     (x:button-event:state    "MAKINUM(((XButtonEvent *) x)->state)")
  43.     (x:button-event:button    "MAKINUM(((XButtonEvent *) x)->button)")
  44.     (x:button-event:same-screen    "x_make_bool(((XButtonEvent *) x)->same_screen)")
  45.  
  46.     (x:motion-event:type    "MAKINUM(((XMotionEvent *) x)->type)")
  47.     (x:motion-event:serial    "MAKINUM(((XMotionEvent *) x)->serial)")
  48.     (x:motion-event:send-event    "x_make_bool(((XMotionEvent *) x)->send_event)")
  49.     (x:motion-event:time    "MAKINUM(((XMotionEvent *) x)->time)")
  50.     (x:motion-event:x        "MAKINUM(((XMotionEvent *) x)->x)")
  51.     (x:motion-event:y        "MAKINUM(((XMotionEvent *) x)->y)")
  52.     (x:motion-event:x-root    "MAKINUM(((XMotionEvent *) x)->x_root)")
  53.     (x:motion-event:y-root    "MAKINUM(((XMotionEvent *) x)->y_root)")
  54.     (x:motion-event:state    "MAKINUM(((XMotionEvent *) x)->state)")
  55.     (x:motion-event:is-hint    "MAKINUM(((XMotionEvent *) x)->is_hint)")
  56.     (x:motion-event:same-screen    "x_make_bool(((XMotionEvent *) x)->same_screen)")
  57.  
  58.     (x:crossing-event:type    "MAKINUM(((XCrossingEvent *) x)->type)")
  59.     (x:crossing-event:serial    "MAKINUM(((XCrossingEvent *) x)->serial)")
  60.     (x:crossing-event:send-event "x_make_bool(((XCrossingEvent *) x)->send_event)")
  61.     (x:crossing-event:time    "MAKINUM(((XCrossingEvent *) x)->time)")
  62.     (x:crossing-event:x        "MAKINUM(((XCrossingEvent *) x)->x)")
  63.     (x:crossing-event:y        "MAKINUM(((XCrossingEvent *) x)->y)")
  64.     (x:crossing-event:x-root    "MAKINUM(((XCrossingEvent *) x)->x_root)")
  65.     (x:crossing-event:y-root    "MAKINUM(((XCrossingEvent *) x)->y_root)")
  66.     (x:crossing-event:mode    "MAKINUM(((XCrossingEvent *) x)->mode)")
  67.     (x:crossing-event:detail    "MAKINUM(((XCrossingEvent *) x)->detail)")
  68.     (x:crossing-event:same-screen "x_make_bool(((XCrossingEvent *) x)->same_screen)")
  69.     (x:crossing-event:focus    "x_make_bool(((XCrossingEvent *) x)->focus)")
  70.     (x:crossing-event:state    "x_make_bool(((XCrossingEvent *) x)->state)")
  71.  
  72.     (x:focus-change-event:type    "MAKINUM(((XFocusChangeEvent *) x)->type)")
  73.     (x:focus-change-event:serial "MAKINUM(((XFocusChangeEvent *) x)->serial)")
  74.     (x:focus-change-event:send-event "x_make_bool(((XFocusChangeEvent *) x)->send_event)")
  75.     (x:focus-change-event:mode    "MAKINUM(((XFocusChangeEvent *) x)->mode)")
  76.     (x:focus-change-event:detail "MAKINUM(((XFocusChangeEvent *) x)->detail)")
  77.  
  78.     (x:keymap-event:type    "MAKINUM(((XKeymapEvent *) x)->type)")
  79.     (x:keymap-event:serial    "MAKINUM(((XKeymapEvent *) x)->serial)")
  80.     (x:keymap-event:send-event    "x_make_bool(((XKeymapEvent *) x)->send_event)")
  81.  
  82.     (x:expose-event:type    "MAKINUM(((XExposeEvent *) x)->type)")
  83.     (x:expose-event:serial    "MAKINUM(((XExposeEvent *) x)->serial)")
  84.     (x:expose-event:send-event    "x_make_bool(((XExposeEvent *) x)->send_event)")
  85.     (x:expose-event:x        "MAKINUM(((XExposeEvent *) x)->x)")
  86.     (x:expose-event:y        "MAKINUM(((XExposeEvent *) x)->y)")
  87.     (x:expose-event:width    "MAKINUM(((XExposeEvent *) x)->width)")
  88.     (x:expose-event:height    "MAKINUM(((XExposeEvent *) x)->height)")
  89.     (x:expose-event:count    "MAKINUM(((XExposeEvent *) x)->count)")
  90.  
  91.     (x:graphics-expose-event:type    "MAKINUM(((XGraphicsExposeEvent *) x)->type)")
  92.     (x:graphics-expose-event:serial    "MAKINUM(((XGraphicsExposeEvent *) x)->serial)")
  93.     (x:graphics-expose-event:send-event    "x_make_bool(((XGraphicsExposeEvent *) x)->send_event)")
  94.     (x:graphics-expose-event:x        "MAKINUM(((XGraphicsExposeEvent *) x)->x)")
  95.     (x:graphics-expose-event:y        "MAKINUM(((XGraphicsExposeEvent *) x)->y)")
  96.     (x:graphics-expose-event:width    "MAKINUM(((XGraphicsExposeEvent *) x)->width)")
  97.     (x:graphics-expose-event:height    "MAKINUM(((XGraphicsExposeEvent *) x)->height)")
  98.     (x:graphics-expose-event:count    "MAKINUM(((XGraphicsExposeEvent *) x)->count)")
  99.  
  100.      ))
  101.  
  102. (define (x::generate-c-code f)
  103.   (fprintf f "/* This file generated by xgen.scm -- do NOT edit it! */\\n")
  104.   (let ((index 0))
  105.     (for-each
  106.      (lambda (item)
  107.        (let ((sname (car item))
  108.          (ccode (cadr item)))
  109.      (fprintf f "    case %d: return %s;\\n" index ccode)
  110.      (set! index (1+ index))))
  111.      x::event-map-table)))
  112.  
  113. (define (x::generate-scheme-code f)
  114.   (fprintf f ";;; This file generated by xgen.scm -- do NOT edit it!\\n")
  115.   (let ((index 0))
  116.     (for-each
  117.      (lambda (item)
  118.        (let ((sname (car item))
  119.          (ccode (cadr item)))
  120.      (fprintf f "(define ")
  121.      (write sname f)
  122.      (fprintf f "  %d)\\n" index)
  123.      (set! index (1+ index))))
  124.      x::event-map-table)))
  125.  
  126. (call-with-output-file "xevent.h" x::generate-c-code)
  127. (call-with-output-file "xevent.scm" x::generate-scheme-code)
  128.  
  129. (quit)
  130.